class Solution {
public:
    bool isValid(string s) {

        stack<char> res;

        if(s.empty())
            return true;

        if(s.size() % 2 == 1)
            return false;

        for(int i = 0; i < s.size(); i++)
        {
            if(res.empty())
            {
                res.push(s[i]);
                continue;
            }  

            if(!res.empty() && res.top() == '(' && s[i] == ')' )
            {
                res.pop();
                continue;
            }
            else if(!res.empty() && res.top() == '{' && s[i] == '}')
            {
                res.pop();
                continue;
            }
            else if(!res.empty() && res.top() == '[' && s[i] == ']')
            {
                res.pop();
                continue;
            }
            res.push(s[i]);  
        }

        return res.empty(); 
    }
};